\markboth{致读者}{致读者} \vspace*{0.0cm}
\thispagestyle{empty}
%\vspace*{2.2cm}
\centerline{\hei{\Large 致~读~者}}\vspace{2cm}

欢迎阅读本书！希望你们能像我们愉快地写作本书一样愉快地阅读本书。本书的名称——操作系统：three easy pieces，这个题目显然是向Richard Feynman撰写的伟大的有关物理学话题的讲义集致敬[F96]。即使这本书肯定达不到这位著名物理学家高度，但也许它能够达到你理解操作系统（更一般的，系统）关键所在的需求。

这三个简单的部分是指本书围绕的三大主题：虚拟化，并发性，持久化。在讨论这些概念时，我们仅仅讨论操作系统所做的最重要的部分；但愿，你在这个过程中能寻找到乐趣。学习新事物多么的有趣，对吧？至少，我门觉得应当是的。

每个主题将分为多章来讲解，每一章会提出一个特定的问题以及讲解如何解决它。每章都比较短，但会尽可能去引用提出该思想的最原始的材料。我们写作本书的一个目的是使得历史的轨迹尽可能的清晰，因为我们认为这可以帮助学生更清晰地了解操作系统现在是什么样子的，过去是什么样子，将来会是什么样子。在此情况下， seeing how the sausage wasmade is nearly as important as understanding what the sausage is good for\footnote{提示：吃的！如果你是素食主义者，请远离。}。

有几个贯穿本书的devices，这里有必要介绍一下。首先是crux of the problem。任何在解决问题的时候，我会先阐述最重要的问题是什么；这个device会在正文中显眼的地方提出来，然后希望通过下文的技术、算法和思想来解决。

另外全书中还有很多加了背景色的asides和tips。asides偏向于讨论与正文相关但可能不太重要的知识点；tips则倾向于可以应用在你的系统中的一般经验。为了方便查阅，在本书结尾的索引处列出了所有的asides和tips以及crux。

纵贯本书，我们用”对话”这一古老的教学方式，作为呈现一些不同观点素材的方式【？？】。这些对话用来引入各个主题概念，也用来偶尔回顾一下前面的内容。这些对话也是一个用幽默风格写作的机会。不知你们发现他们很有用或很幽默了没，好吧，这完全是另一码事儿。

在每个主要部分开始时，会先给出操作系统提供的抽象概念，接着的章节是提供该抽象概念所需要的机制、策略以及其他支持。这些抽象概念对于计算机科学各个方面都很重要，所以显然，它们对操作系统来说也是很必要的。

在这些章节中，我们会尽可能（实际上是所有例子）用真实可用的代码（而不是伪代码），你们可以自己编写并运行所有例子。在真实的系统上运行真实的代码是学习操作系统最好的方式，所以我们鼓励你们尽己所能的这么做。

在正文许多章节中，我们提供了少量的习题以确保你们可以理解正在学习的内容。许多习题是简单的模拟操作系统对应的部分。你们可以下载这些习题，运行并检测自己的学习状况。这些模拟器有一些特性：对于给定的不同的随机种子，你可以生成几乎无限的问题集；这些模拟器也可以告诉你如何解决这些问题。因此，你可以一测再测，直到比较好的理解了这些问题。

这本书最重要的addendum是一系列的项目。在这些项目里，你可以学习真实系统的设计、实现和测试是如何进行的。所有的项目（包括上述的例子）是用C语言[KR88]编写的；C是个简单而又强大的语言，绝大多数的操作系统都是以它为基础，因此很值得将他纳入你的语言工具集中。这些项目有两种形式可选（详见the online appendix for ideas）。第一个是系统编程（systems programming）项目；这些项目对那些不熟悉C和Unix，但又想学习如何进行底层编程的学生很适合。第二个是基于在MIT开发的真实的操作系统内核——xv6[CK+08]；这些项目对于那些已经有了一些C基础并想摸索进真正的OS里的学生很适合。在Wisconsin，这个课程的实验以三种方式开展：全部系统编程，或全部xv6编程，或者两者皆有。


